home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Interactive Media Design Review 1999
/
Interactive Media Design Review 1999.iso
/
pc
/
Demos
/
Herois
/
Codigo.Cst
/
00022_Script_Anima Sprite c- Subliminar
< prev
next >
Wrap
Text File
|
1999-03-19
|
5KB
|
155 lines
property spr
property memberPrim, memberUlt -- Cast members que serao animados
property memPrim, memQuantos -- Membros: em numero
property espera -- Tempo de espera entre cada mudanca (em ticks)
property aleatorio -- True para mudanca aleatoria
property ultimaTroca -- Hora em que foi feita ultima troca
property fotoAtual
property tempoAleatorio
property proxEspera
property delta
property prioridade
property subliminar, memSubliminar
property tempoSubliminar, deltaSubliminar
property inicioTimer, estadoSub
on getBehaviorDescription
return "Anima sprites"
end
on getPropertyDescriptionList
set p_list = [ ¼
#memberPrim: [ #comment: "Primeiro membro da animacao", ¼
#format: #string, ¼
#default: "" ], ¼
#memberUlt: [ #comment: "Ultimo membro da animacao", ¼
#format: #string, ¼
#default: "" ], ¼
#espera: [ #comment: "Espera entre cada troca em 1/60s (velocidade)",¼
#format: #integer,¼
#default: 60 ],¼
#aleatorio: [ #comment: "Animacao randomica",¼
#format: #boolean,¼
#default: false ],¼
#tempoAleatorio: [ #comment: "Tempo de animacao randomica",¼
#format: #boolean,¼
#default: false ],¼
#delta: [ #comment: "Espera no inicio da animacao",¼
#format: #integer,¼
#default: 0 ],¼
#prioridade: [ #comment: "Prioridade da animacao (se anima em momentos criticos)",¼
#format: #integer,¼
#default: 0 ],¼
#subliminar: [ #comment: "Foto subliminar", ¼
#format: #string, ¼
#default: "" ], ¼
#tempoSubliminar: [ #comment: "Tempo que leva para imagem subliminar aparecer toda",¼
#format: #integer,¼
#default: 0 ],¼
#deltaSubliminar: [ #comment: "Tempo antes da imagem subliminar comecar a aparecer",¼
#format: #integer,¼
#default: 0 ]¼
]
return p_list
end
on beginSprite me
set spr = the spriteNum of me
inicializaAnima me
if prioridade < 0 then
set prioridade = 0
end if
end
on inicializaAnima me
set memPrim to the number of member memberPrim
set memQuantos to (the number of member memberUlt) - memPrim + 1
set memSubliminar to the number of member subliminar
set proxEspera = random(espera)
put 0 into fotoAtual
set ultimaTroca = 0
if delta > 0 then set the visibility of sprite spr to false
set estadoSub = 4
end
on cleanSprite me
puppetSprite (the spriteNum of me),false
set the visibility of sprite spr to true
end
on idleSprite me
global gMustUpdate
if ultimaTroca = 0 then
set ultimaTroca = the timer
set inicioTimer = the timer
end if
set tmp = the timer - ultimaTroca
if delta > 0 and tmp > delta then
set ultimaTroca = the timer
set the visibility of sprite spr to true
set delta = 0
set tmp = 0
set inicioTimer = the timer
end if
-- Testa se ja e' hora de trocar figura
if tempoAleatorio then
if tmp > proxEspera then
set tmp = true
set proxEspera = random(espera)
else
set tmp = false
end if
else
if tmp > espera then
set tmp = true
else
set tmp = false
end if
end if
-- Troca, se ja' for hora e se nao for em area critica
global gCritico
if tmp and prioridade >= gCritico then
-- Descobre qual a proxima figura a trocar
if estadoSub = 0 then
set chance = (the timer - inicioTimer) * 1000 / tempoSubliminar
else if estadoSub = 1 then
set chance = 1001
else if estadoSub = 2 then
set chance = 1000 -(the timer - inicioTimer) * 1000 / tempoSubliminar
else if estadoSub = 4 and (the timer - inicioTimer) > deltaSubliminar then
set estadoSub = 0
set inicioTimer = the timer
end if
if estadoSub < 3 and random(1000) < chance then
if estadoSub = 0 and chance > 1000 then
set estadoSub = 1
set inicioTimer = the timer
else if estadoSub = 1 and the timer - inicioTimer > 180 then
set estadoSub = 2
set inicioTimer = the timer
else if estadoSub = 2 and chance < 0 then
set estadoSub = 4
end if
set tmp = memSubliminar
else if (aleatorio) then
put random(memQuantos - 1) - 1 into tmp
if tmp >= fotoAtual then put 1 + tmp into tmp
put tmp into fotoAtual
set tmp = memPrim + fotoAtual
else
put fotoAtual + 1 into fotoAtual
if fotoAtual >= memQuantos then put 0 into fotoAtual
set tmp = memPrim + fotoAtual
end if
-- Muda figura e updateStage
set the member of sprite (the spriteNum of me) to tmp
set gMustUpdate to true
put the timer into ultimaTroca
end if
end